package models

import (
	"fmt"
	"os"
	"os/exec"
	"strings"
	"syscall"
	"wails/modules/editor/configs"

	"gitee.com/zhongguo168a/gocodes/citools"
	"zhongguo168a.top/mycodes/gocodes/utils/maputil"
)

// 应该作为独立的命令脚本
func (p *EditorModule) G更新帧动画(配置 map[string]interface{}) error {
	名称 := maputil.String(配置, "_name")
	相对路径 := 名称

	dir := "D:/assets/effects/帧动画/" + 相对路径

	pathArr := strings.Split(相对路径, "/")
	帧动画名称 := pathArr[len(pathArr)-1]
	pathArr = pathArr[:len(pathArr)-1]
	相对输出路径 := strings.Join(pathArr, "/")
	exportBasePath := `D:/assets/effects/帧动画/_export`
	输出路径 := exportBasePath + "/" + 相对输出路径
	os.MkdirAll(输出路径, os.ModePerm)
	sheetPath := 输出路径 + "/" + 帧动画名称

	var extendargs = ""
	导入处理 := maputil.Map(配置, "导入处理")
	if 导入处理 != nil {
		缩放 := maputil.Float64(导入处理, "缩放")
		if 缩放 > 0 {
			extendargs = fmt.Sprintf(` --scale %v`, 缩放)
		}
	}

	cmd := fmt.Sprintf(`TexturePacker --format json --sheet "%v.png" --data "%v.atlas"%v "%v"`, sheetPath, sheetPath, extendargs, dir)
	fmt.Println(cmd)
	gocmd := exec.Command("CMD")
	//  核心点,直接修改执行命令方式
	gocmd.SysProcAttr = &syscall.SysProcAttr{CmdLine: fmt.Sprintf(`/c %s`, cmd), HideWindow: true}
	gocmd.Stdout = os.Stdout
	gocmd.Stderr = os.Stderr
	err := gocmd.Run()
	if err != nil {
		return err
	}

	rsyncSource := citools.RysncChange盘符(sheetPath)
	rsyncTarget := citools.RysncChange盘符(configs.YamlLocal.X项目路径)
	citools.RsyncDir(rsyncSource+".png", rsyncTarget+"/asset/帧动画/"+相对输出路径)
	citools.RsyncDir(rsyncSource+".atlas", rsyncTarget+"/asset/帧动画/"+相对输出路径)
	return nil
}
